package uds.geoloc;

import java.util.ArrayList;

import uds.data.POI_Database;
import uds.data.POI_Entry;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;

import com.google.android.maps.OverlayItem;

// ItemizedOverlay est la classe qui permet de définir les points de la carte
public class ItemizedOverlay extends com.google.android.maps.ItemizedOverlay 
{	
	private Context context;
	private ArrayList<OverlayItem>  arrayListOverlayItem = new ArrayList<OverlayItem>();
	private int selected_id;
	private OverlayItem item;
    
	private POI_Database base_poi = new POI_Database(context);
	
	public ItemizedOverlay(Drawable defaultMarker, Context pContext) 
	{
		super(boundCenterBottom(defaultMarker));
		this.context = pContext;
	}

	@Override
	protected OverlayItem createItem(int i) 
	{
		return arrayListOverlayItem.get(i);
	}

	@Override
	public int size() 
	{
		return arrayListOverlayItem.size();
	}
	
	 public void addOverlayItem(OverlayItem overlay)
	 {
		 arrayListOverlayItem.add(overlay);
		 populate();
	 }
	 
	 @Override
	 protected boolean onTap(int index)
	 {
		 item = arrayListOverlayItem.get(index);
		 OnClickListener listener = new OnClickListener() // Implémentation d'un OnClickListener
		 {	
			@Override
			public void onClick(DialogInterface dialog, int which) 
			{
				String id = item.getSnippet();
				Intent intent = new Intent(context, InfoActivity.class);
				Bundle info = new Bundle();
				info.putString("id", id); // Spécification du bâtiment choisi
				intent.putExtras(info);
	    		context.startActivity(intent);	
			}
		};
		
		AlertDialog.Builder dialog = new AlertDialog.Builder(context);
		base_poi = new POI_Database(context);
		base_poi.open();
		// Mise en place du AlertDialog
		dialog.setTitle(item.getTitle());
		String description = base_poi.getPOI_EntryWithId(item.getSnippet()).getDescription();
		if (description.equals(""))
		{
			description = "Pas de description";
		}
		dialog.setMessage(description);
		System.out.println(base_poi.getPOI_EntryWithId(item.getSnippet()).getType());
		if(base_poi.getPOI_EntryWithId(item.getSnippet()).getType().equals("batiment")){ // Accès à InfoActivity si le POI est un bâtiment
			dialog.setNeutralButton("Plus d'info", listener);
		}
		dialog.show();
		base_poi.close();
		return true;
	}
}